import '../../lib_baseview/utils/cache_util.dart';
import '../../lib_runtime/global_config.dart';

class UrlConfig {
  UrlConfig._();

  static Map<String, String> _configMap = {};

  /// 接口域名
  static String get apiDomain {
    dynamic value = _configMap['api_domain'];
    if (value is String && value.isNotEmpty) {
      return value;
    }

    return 'https://api-app.yahabbi.com';
  }

  /// h5域名
  static String get pageDomain {
    dynamic value = _configMap['page_domain'];
    if (value is String && value.isNotEmpty) {
      return value;
    }

    return 'https://h5web.yahabbi.com';
  }

  static String get wsDomain {
    dynamic value = _configMap['ws_domain'];
    if (value is String && value.isNotEmpty) {
      return value;
    }
    return 'ws://47.91.105.196:17961/ws';
  }

  // /// 协议域名
  // static String get protocolDomain {
  //   dynamic value = _configMap['protocol_domain'];
  //   if (value is String && value.isNotEmpty) {
  //     return value;
  //   }
  //   return 'https://www.yay.chat/agreements';
  // }

  // /// cdn域名
  // static String get cdnDomain {
  //   dynamic value = _configMap['cdn_domain'];
  //   if (value is String && value.isNotEmpty) {
  //     return value;
  //   }
  //   return 'https://cdn.yay.chat';
  // }

  static set configMap(Map<String, String> map) {
    _configMap = map;
  }

  static void init() {
    int serEnv = GlobalConfig.isOfficial ? 0 : 1;
    if (GlobalConfig.isDebug) {
      serEnv = CacheUtil.getInt(CacheKeys.serEnv, serEnv);
    }
    Map<String, String>? env = _getEnv(serEnv);
    if (env != null) {
      _configMap = env;
    }
  }

  /// 正式环境暂无特殊设置
  /// index: 0:正式环境 1:测试环境 99:本地环境
  static Map<String, String>? _getEnv(int index) {
    // index = 99;
    switch (index) {
      case 0:
        return null;
      case 1:
        return {
          /// 正式环境 (禁止在测试环境调试，正式环境注册账号和测试环境注册账号流程一致)
          'api_domain': 'https://api-app.yahabbi.com',
          'page_domain': 'https://h5web.yahabbi.com',
          'ws_domain': 'ws://47.91.105.196:17961/ws',
        };
      case 99:
        String localDomain = CacheUtil.get(LOCAL_DOMAIN);
        Map<String, String> m = {
          /// 测试环境
          // 'api_domain': 'http://8.155.20.96:8000',
          // 'page_domain': 'https://h5web.qnyun.cc/app-h5',
          // 'ws_domain': 'ws://8.155.20.96:17961/ws',

          /// 冯好运环境
          // 'api_domain': 'http://192.168.199.160:8000',
          // 'page_domain': 'https://h5web.qnyun.cc/app-h5',
          // 'ws_domain': 'ws://192.168.199.160:17961/ws',
        };
        if (localDomain.isNotEmpty) {
          m['api_domain'] = '$localDomain/api/v1';
        }
        return m;
      default:
        return null;
    }
  }
}

const LOCAL_DOMAIN = '.jr.LOCAL_DOMAIN';
